import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;

/** Dans le model MVC cette est le conteneur de toutes les autres classes visuel*/
public class VueIHM extends JFrame implements Runnable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/** Attributs */
	private JPanel monPanel;
	private VueControleVideo maVueControleVideo;
	private VueControleBateau maVueControleBateau;
	private VueConnexion maVueConnexion;
	private VueVideo maVueVideo;
	private ControleurIHM monCtrlIHM;
	private ModelIHM monModelIHM;
	//private JLayeredPane contentPane;
	/** Constructeur */
	public VueIHM (){
		super();
		/** On initialise notre fenêtre */
		build();
		
	
	}
	/** Méthodes */
		
	
	private void build()  {
		setTitle("IHM Bateau"); //On donne un titre à l'application
		
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
		setLocation(0,0);
		setSize(640,480);
		this.setVisible(true);
		
		monCtrlIHM = new ControleurIHM();
		setFocusable(true);
		requestFocus();
		addKeyListener(monCtrlIHM);
		monPanel = new JPanel();
		monPanel.setLayout(null);
		
		/** Initialisation des éléments **/
				
		/* Rappel des touches */
		JPanel rappelPanel = new JPanel();
		rappelPanel.setBorder(BorderFactory.createTitledBorder("Rappel des touches"));
		JTextPane rappel = new JTextPane();
		rappel.setText("z : Vitesse +\r\ns : Vitesse -\r\nq : Gauche\r\nd : Droite\r\n8 : Cam Haut\r\n2 : Cam Bas\r\n4 : Cam Gauche\r\n6 : Cam Droite");
		rappel.setBounds(0, 11, 180, 175);
		rappel.setEditable(false);
		rappelPanel.setBounds(10,250,180,175);
		rappelPanel.add(rappel);
		monPanel.add(rappelPanel);
		this.add(monPanel);
		
	}
	
	public void run() {
		this.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent arg0) {
				System.out.println("Fermeture");
				maVueVideo.quitter();
				monModelIHM.getMatelot().deconnecter();
				
			}
		});
		this.setVisible(true);
		
	}
	/** Accesseur */
	public void setVueControleVideo (VueControleVideo vCtrlVideo){
		/* Controle Video*/
		maVueControleVideo = vCtrlVideo;
		maVueControleVideo.setBounds(400,250,180,110);
		monPanel.add(maVueControleVideo);
	}
	
	public void setVueConnexion(VueConnexion vConnexion){
		/*etat de la connexion */
		maVueConnexion = vConnexion;
		maVueConnexion.setBounds(400,10,190,60);
		monPanel.add(maVueConnexion);
		/** Ajout des éléments **/
		add(monPanel);
	}
	
	public void setVueControleBateau (VueControleBateau vCtrlBateau){
		/*Controle Bateau*/
		maVueControleBateau = vCtrlBateau;
		maVueControleBateau.setBounds(400,100,200,120);
		monPanel.add(maVueControleBateau);
	}
	
	public void setVueVideo (VueVideo vVideo){
		/* Vue de la vidéo*/
		maVueVideo = vVideo;
		monPanel.add(maVueVideo);
			
	}
	
	public void setModelIHM (ModelIHM mIHM){
		monModelIHM = mIHM ;
		monCtrlIHM.setModelIHM(monModelIHM);
	}
	public void setVueControleProfondeur(Object vueControleProfondeur) {
		// TODO Auto-generated method stub
		
	}
	

}
